package com.augurit.common.calendar.service;

import java.text.ParseException;
import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.augurit.common.base.service.ICrudService;
import com.augurit.common.calendar.web.form.SysCalendarForm;
import com.augurit.common.system.web.org.form.OmOrgForm;

public interface ISysCalendarService extends ICrudService<SysCalendarForm, Long> {
	/**
	 * 添加日程事件
	 * @param form
	 * @throws ParseException
	 */
	public void addCalendarEvent(SysCalendarForm form)throws ParseException;
	
	/**
	 * 获取所有的日程事件
	 * @return
	 */
	public List<SysCalendarForm> getAllCaEvents();
	
	/**
	 * 获取某个用户别人共享给他的日程
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getSharedEvents(Long userId);
	
	/**
	 * 获取公共的日程
	 * @return
	 */
	public List<SysCalendarForm> getPublicEvents();
	
	/**
	 * 获取某个用户自己的日程
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getOwnEvents(Long userId);
	
	/**
	 * 获取用户创建的日程
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getCreateEvents(Long userId);
	
	/**
	 * 获取某一个用户可以编辑、可以读的事件
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getAllEvents(Long userId);
	
	/**
	 * 获取一个用户可以编辑的事件
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getCanEditEvents(Long userId);
	
	/**
	 * 获取一个用户可以阅读的事件
	 * @param userId
	 * @return
	 */
	public List<SysCalendarForm> getCanReadEvents(Long userId);
	
	/**
	 * 获取机构用户树
	 * @return
	 */
	public List<OmOrgForm> getOrgUserTree();
	
	public void deleteCascade(Long... ids);
	
}